import { getEmplyeeBaseInfo, getUserBaseInfo, login } from '@/api/user'
import { getToken, removeToken, setToken } from '@/utils/auth'
// import { Message } from 'element-ui'

export default {
  namespaced: true,
  state: {
    token: getToken(),
    userInfo: {} // 用户基本信息
  },
  getters: {

  },
  mutations: {
    // 保存tokrn
    setToken(state, token) {
      console.log('token', typeof token)
      state.token = token
      // 持久化存储-cookie
      setToken(token)
    },
    // 清除token
    removeToken(state) {
      state.token = null
      removeToken()
    },
    // 保存用户基本信息
    setUserInfo(state, userInfo) {
      state.userInfo = userInfo
    },
    // 清除用户基本信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 调用登录接口
    async login(context, data) {
      // try {
      //   // 对象层层解构res
      //   const { data: { success, data: token, message }} = await login(data)
      //   // 判断请求是否成功
      //   if (success) {
      //     context.commit('setToken', token)
      //   } else {
      //   // 在js中没有办法通过this.$xxx来获取组件的东西(this指向$store)
      //     Message.error(message)
      //   }
      // } catch (error) {
      //   // 处理状态码不为200的错误
      //   console.log(error)
      //   Message.error('服务出错,请稍后再试')
      // }

      // 从响应拦截器返回成功的数据,并提交到vuex中
      const token = await login(data)
      context.commit('setToken', token)
    },
    // 退出登录
    logout(context) {
      // 退出并清除cookie中的token
      context.commit('removeToken')
      // 退出并清除用户基本信息
      context.commit('removeUserInfo')
    },
    async getInfo(context) {
      const u = await getUserBaseInfo()
      const e = await getEmplyeeBaseInfo(u.userId)
      const o = { ...u, ...e }
      // 模拟找不到的头像图片
      // o.staffPhoto = 'http://q6cu3t6jv.bkt.clouddn.com/1063705989926227968?t=1582797590950'
      // o.staffPhoto = null
      context.commit('setUserInfo', o)
    }
  }
}
